package com.siashan.toolkit.crypt;

/**
 * 为编码器提供最高级别的抽象。
 * <p>
 * 这是{@link Decoder}的姐妹接口。编码器的每个实现都提供了这一点
 * 通用通用接口，允许用户将通用对象传递给任何编码器实现
 * 在编解码器包中。
 *
 */
public interface Encoder {

    /**
     * 对“对象”进行编码并将编码内容作为对象返回。这里的对象可能只是
     * {@code byte[]}或{@code String}取决于所使用的实现。
     *
     * @param source
     *           要编码的对象
     * @return “编码”对象
     * @throws EncoderException
     *             如果编码器在编码过程中遇到故障，将引发编码器异常过程
     */
    Object encode(Object source) throws EncoderException;
}

